Database Tutorials -
পিএল/এসকিউএল (PL/SQL)
PL/SQL Debugging এবং Testing |
167
167
PL/SQL Unit Testing হল একটি প্রক্রিয়া যেখানে PL/SQL কোডের নির্দিষ্ট অংশ (যেমন প্রোসিডিউর, ফাংশন, বা প্যাকেজ) আলাদা করে পরীক্ষা করা হয় যাতে তার কার্যকারিতা সঠিকভাবে নিশ্চিত করা যায়। এটি ডেভেলপারদের জন্য কোডে ত্রুটি খুঁজে বের করার এবং তার পরবর্তী উন্নতিতে সহায়ক হয়। সাধারণভাবে, Unit Testing একটি নির্দিষ্ট কার্যকলাপ বা ছোট ছোট কোড ব্লক পরীক্ষা করে দেখে তারা সঠিকভাবে কাজ করছে কিনা।
PL/SQL Unit Testing প্রক্রিয়া পরীক্ষার ক্ষেত্রে কিছু বিশেষ কৌশল এবং সরঞ্জাম ব্যবহৃত হয়। Oracle এবং অন্যান্য তৃতীয় পক্ষের সরঞ্জামগুলি সাধারণত এই প্রক্রিয়াকে সহজ করে দেয়।
PL/SQL Unit Testing এর উপকারিতা
Code Reliability (কোডের নির্ভরযোগ্যতা):
Unit Testing কোডের নির্ভরযোগ্যতা নিশ্চিত করতে সাহায্য করে, কারণ প্রতিটি ইউনিট বা মডিউল এককভাবে পরীক্ষা করা হয়।
Faster Debugging (ডিবাগিং দ্রুততা):
Unit Testing দ্বারা ত্রুটি দ্রুত খুঁজে পাওয়া যায়, যেহেতু পরীক্ষার সময়ে ছোট কোডের অংশ পরীক্ষা হয়।
Regression Testing (রিগ্রেশন টেস্টিং):
নতুন কোড যোগ বা পরিবর্তন করলে পুরানো কোডটি এখনও ঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য Unit Testing করা হয়।
Documentation (ডকুমেন্টেশন):
Unit Testing কোডের প্রত্যাশিত ফলাফল এবং আউটপুটের জন্য ডকুমেন্টেশন তৈরি করতে সাহায্য করে। এটি ভবিষ্যতে অন্যান্য ডেভেলপারদের জন্য সহায়ক।
PL/SQL Unit Testing এর প্রক্রিয়া
PL/SQL Unit Testing সাধারণত তিনটি ধাপে ভাগ করা হয়:
Test Case লেখা: আপনার কোডের ফাংশন, প্রোসিডিউর বা অন্য কোনো ইউনিট পরীক্ষার জন্য টেস্ট কেস লেখা।
Test Case Execute করা: টেস্ট কেসগুলো এক্সিকিউট করা।
Result Analyze করা: টেস্ট কেসের ফলাফল বিশ্লেষণ করা এবং ত্রুটি থাকলে তা ঠিক করা।
PL/SQL Unit Testing সরঞ্জাম
Oracle এবং তৃতীয় পক্ষের সরঞ্জামগুলো PL/SQL ইউনিট টেস্টিং সহজ করার জন্য সহায়তা করে। এখানে কয়েকটি জনপ্রিয় সরঞ্জামের নাম:
UTPLSQL (Popular Unit Testing Framework):
Oracle ডাটাবেসের জন্য একটি জনপ্রিয় ইউনিট টেস্টিং ফ্রেমওয়ার্ক। এটি PL/SQL কোডের ইউনিট টেস্টিং সহজভাবে করতে সহায়তা করে। এটি PL/SQL Unit Tests তৈরি, চালানো, এবং রিপোর্ট তৈরি করার জন্য ব্যবহৃত হয়।
SQL Developer:
Oracle SQL Developer একটি ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) যা Unit Testing-এর জন্য সরাসরি সমর্থন দেয়। এতে টেস্ট স্ক্রিপ্ট লেখা, চালানো এবং ফলাফল দেখার সুযোগ থাকে।
TOAD (Tool for Oracle Application Developers):
TOAD হল আরেকটি জনপ্রিয় টুল, যা PL/SQL কোডের ইউনিট টেস্টিং সাপোর্ট করে। এটি কোড উন্নয়ন এবং টেস্টিং-এর জন্য শক্তিশালী।
Unit Testing Example
ধরা যাক, আমাদের একটি প্রোসিডিউর আছে যা একটি কর্মচারীর স্যালারি আপডেট করে। এই প্রোসিডিউরটি টেস্ট করতে আমরা একটি Unit Test তৈরি করব।
Sample Procedure:
CREATE OR REPLACE PROCEDURE update_salary (
emp_id IN NUMBER,
new_salary IN NUMBER
) AS
BEGIN
UPDATE employees
SET salary = new_salary
WHERE employee_id = emp_id;
COMMIT;
END update_salary;
Sample Unit Test (using UTPLSQL):
-- Test Procedure for update_salary
BEGIN
-- Test Case 1: Test valid salary update
ut.expect(update_salary(1001, 5000)).to_equal(1);
-- Test Case 2: Test invalid employee_id
ut.expect(update_salary(9999, 6000)).to_raise_error;
-- Test Case 3: Test salary update with negative value
ut.expect(update_salary(1002, -1000)).to_raise_error;
END;
Explanation:
প্রথম টেস্ট কেসটি একটি বৈধ emp_id দিয়ে স্যালারি আপডেট পরীক্ষা করছে।
দ্বিতীয় টেস্ট কেসটি একটি অবৈধ emp_id দিয়ে চেষ্টা করছে যা একটি ত্রুটি সৃষ্টি করবে।
তৃতীয় টেস্ট কেসে একটি নেতিবাচক স্যালারি দিয়ে প্রোসিডিউরটি পরীক্ষা করা হচ্ছে, যা ত্রুটি ঘটাবে।
PL/SQL Unit Testing ফলাফল বিশ্লেষণ
যখন Unit Test চালানো হয়, তখন আপনি ফলাফল বিশ্লেষণ করতে পারেন। ফলাফল সফল হলে, এটি আপনাকে জানাবে যে কোড সঠিকভাবে কাজ করছে। আর যদি কোনো ত্রুটি ঘটে, তখন আপনি ঐ ত্রুটির কারণ খুঁজে বের করতে পারেন এবং সংশোধন করতে পারেন।
UTPLSQL Testing Output:
Test Resultfor update_salary Procedure:
---------------------------------------------------------
Test Case1: Passed (Salary updated successfully)
Test Case2: Failed (Employee ID 9999 does not exist)
Test Case3: Failed (Negative salary not allowed)
PL/SQL Unit Testing Best Practices
Test Boundary Cases:
সর্বদা সীমাবদ্ধ (boundary) কেসগুলি পরীক্ষা করুন, যেমন শূন্য মান, সর্বোচ্চ বা সর্বনিম্ন সীমা।
Test for Expected and Unexpected Behavior:
যেমন: যদি সিস্টেমের বাইরে কোনো ইনপুট আসলে কী হবে। সেগুলোও পরীক্ষা করুন।
Mocking Dependencies:
যদি ফাংশন বা প্রোসিডিউর অন্য ডাটাবেস টেবিল বা সিস্টেম ডিপেন্ডেন্ট হয়, তবে ওই অংশগুলিকে Mock করা উচিত যাতে শুধু আপনার কোডের কার্যকারিতা পরীক্ষা করা যায়।
Automate the Testing:
Unit Testing-কে স্বয়ংক্রিয় করা উচিত যাতে আপনি নিয়মিতভাবে কোড পরিবর্তনের পর টেস্ট চালাতে পারেন এবং নিশ্চিত হতে পারেন যে কোনো সমস্যা হয়নি।
Error Handling:
যতটা সম্ভব বিভিন্ন ধরণের ত্রুটি এবং ব্যতিক্রম (exception) কভার করার চেষ্টা করুন যাতে কোডের সমস্ত অংশ নিশ্চিতভাবে পরীক্ষা হয়।
Conclusion
PL/SQL Unit Testing কোডের সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ। এর মাধ্যমে আপনি আপনার কোডের গুণগত মান উন্নত করতে পারবেন এবং সিস্টেমের বিকাশের সময় ত্রুটি হ্রাস পাবে। ইউনিট টেস্টিং সরঞ্জাম এবং ফ্রেমওয়ার্ক যেমন UTPLSQL, SQL Developer, এবং TOAD ব্যবহার করে এই প্রক্রিয়াটি সহজ করা যেতে পারে।